package zouhaotian.rbac.service.array;

import zouhaotian.rbac.domain.dto.DeptDto;
import zouhaotian.rbac.domain.entity.Dept;
import zouhaotian.rbac.domain.entity.User;
import zouhaotian.rbac.domain.vo.Deptvo;
import zouhaotian.rbac.domain.vo.Result;
import zouhaotian.rbac.service.IDeptService;
import zouhaotian.rbac.service.IUserService;
import zouhaotian.rbac.util.SingletonFactory;

import java.time.LocalDateTime;


/**
 * 业务层-部门
 *
 * @auther 邹昊天
 * @since 2025/6/19 21:35
 */

@Deprecated
public class DeptService extends BaseService<Dept,DeptDto,Deptvo> implements IDeptService {

    private IUserService userService;



    private DeptService(){
        data = new Dept[DATA_SIZE + 1];
        temp = new Deptvo[DATA_SIZE];
    }

@Override
    Deptvo convertToVo(Dept dept){

        return new Deptvo(dept.getId(), dept.createAt, dept.updateAt,
                dept.name, dept.phone);
    }

    @Override
    Dept createEntity(DeptDto dto, int id){
        LocalDateTime now = LocalDateTime.now();
        return new Dept(id, now, now, dto.name, dto.phone);
    }

    @Override
    void updateEntity(DeptDto dto, Dept dept){
        dept.updateAt = LocalDateTime.now();
        dept.name = dto.name;
        dept.phone = dto.phone;
    }





    @Override
    public Result delete(int id){
        if (!existsById(id)){
            return Result.failure("删除失败，不存在该数据");
        }
        if (userService == null){
            userService = SingletonFactory.getInstance(UserService.class);
        }
        if (userService.deptInUse(id)){
            return Result.failure("删除失败，还有用户属于该部门，不能删除");
        }
        data[id] = null;
        return Result.success("删除成功", null);
    }
}
